﻿using System.Collections.Generic;
using System.Linq;
using SharpArch.NHibernate.Contracts.Repositories;

namespace ChampionsLeagueBets.Infrastructure
{
	public interface IExRepository<T> : INHibernateRepository<T>
	{
		/// <summary>
		/// Parametryzowanie metody pobierania wszystkich elementów
		/// </summary>
		/// <param name="deleted">true - pobierz wszystkie, false - pobierz wszystkie nieusunięte</param>
		/// <returns>Ilist pobranych elementów</returns>
		IList<T> GetAll(bool deleted);

		/// <summary>
		/// Pobiera wszystkie elementy
		/// </summary>
		/// <returns></returns>
		new IList<T> GetAll();

		/// <summary>
		/// Metoda pobiera obiekt IQueryable do wykorzystania w Gridzie w celu filtrowania, stronicowania i sortowania
		/// </summary>
		/// <returns>Obiekt IQueryable</returns>
		IQueryable<T> GetQuery();

		/// <summary>
		/// Liczba wierszy
		/// </summary>
		/// <returns></returns>
		int GetRowCount();
	}
}
